package com.zy.面向对象.多态

object Test {

  def main(args: Array[String]): Unit = {

    // 在java中 类的方法具有动态绑定特性
    // 编译时不会确定引用对象的实际类型，在运行时函数调用与响应调用所需要的代码相结合
    // scala和java方法都有动态绑定的特性
    val person: Person = new Student
    person.printInfo()

    // 对于属性 java中的属性是静态绑定，在scala中属性也是动态绑定的
    println(person.name)
  }
}


class Person {
  val name: String = "张三"

  def printInfo(): Unit = {
    println(s"Hello $name")
  }
}

class Student extends Person {
  override val name: String = "李四"

  override def printInfo(): Unit = {
    println(s"Hello Student $name")
  }
}
